# Dl-Spt
Dl-Spt is a CLI app made with NodeJS that downloads Spotify playlists and albums using the dz.loaderapp API.

## Features:
* Download Spotify playlist with just the URL to a specified directory
* Also works with playlists with local files
* Choose between `%artist% - %title%` or `%title% - %artist%` for song filename.
* Doesn't require login
* Preview details from playlist (name, number of songs and songs)
* Select specific songs in playlist to download.
* Watch downloaded songs and total progress
* Parallel downloads

### Download
Executables are available to download on [releases](https://notabug.org/dlspt/dl-spt/releases).

### Build from source
In root directory:
```
npm install
npm run build
```

## How does it work?
Dl-Spt uses an unofficial Spotify API to get the details of the playlist and looks for song matches in Deezer. It grabs the first match and downloads the song with the dz.loaderapp API.



## Troubleshooting

* **Network errors:** `ENOTFOUND`\*, `ECONNRESET`\*, `ETIMEDOUT`\*

* **Deezer error:**`NFDEEZER` : Song wasn't found on Deezer.

  If you're sure it exists and you have the URL of the song in Deezer, download it directly from the dz.loader API by entering this in your browser: `https://dz.loaderapp.info/deezer/{quality}/{DeezerSongLink}`. Quality can be `128`, `320` or `1411` (FLAC).

  Example: `https://dz.loaderapp.info/deezer/1411/https://www.deezer.com/en/track/116348610` (The Beatles - Help! in FLAC)

  **Why does it fail if it exists?** dl-spt uses Deezer to search for a song, but the search feature in Deezer is really bad. [Here is an example where a random extra space in the middle of the artist prevents from getting results](https://imgur.com/a/o3XIRhW).

* **dz.loader API errors:** 

  * `MAXQUERIES`\*, `ISC503`\*, any error like `ISC5xx`. If you're getting `ISC500` in all your songs it means the dz.loader API is down. It doesn't happen often but when it does it can take like 4 o 5 days to work again. Sadly, there's nothing I can do about this.
  *  `ISC404`: Song exists on Deezer but is not available to download.

*  **Other error**: Send a PM to `u/dodosgo` in Reddit.

\* If you receive any of those, an "'Aaaah! Network probleeems!'" will appear. The app will retry the requests 10 times each 2 seconds or until the request succeeds (whichever happens first).

